﻿using System;
using System.Collections.Generic;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using System.IO;
using Custom;

namespace BizkaibusMobilePro
{
    public partial class frmProximasLlegadas : Form
    {
        public frmProximasLlegadas()
        {
            InitializeComponent();
        }

        bizbus.TQ service = new BizkaibusMobilePro.bizbus.TQ();
        string _linea, _ssid;
        XmlDocument _favoritos;

        public void ShowDetail(string linea,string ssid, XmlDocument favoritos)
        {
            _linea = linea;
            _ssid = ssid;
            _favoritos = favoritos;

            this.ShowDialog();
        }

        private void BuscarLlegadas(string linea, string ssid)
        {
            string llegadas="";
            try
            {
                helper.FormDisable(this, "Buscando autobuses en camino...");
                llegadas = service.GetPasoParada(linea, ssid);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                return;
            }
            finally
            {
                helper.FormEnable(this);
            }
            if (llegadas.ToUpper().StartsWith("OBJECT REFERENCE"))
            {
                MessageBox.Show("En estos momentos el servicio de consulta de paradas no está disponible para la linea seleccionada. Intentelo de nuevo pasados unos minutos.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                return;
            }
            XmlDocument doc = helper.XmlGetDocumentFromSource(llegadas);

            ListViewItem newItem = new ListViewItem();
            lstLlegadas.BeginUpdate();
            lstLlegadas.Items.Clear();
            foreach (XmlNode pasoparada in doc.SelectNodes("//PasoParada"))
            {
                foreach (XmlNode e in pasoparada.SelectNodes("*/*/.."))
                {
                    if (e.SelectSingleNode("minutos").InnerText.Trim() == "")
                    {
                        continue;
                    }
                    newItem = new ListViewItem();
                    newItem.Text = pasoparada.SelectSingleNode("linea").InnerText;
                    newItem.SubItems.Add(e.SelectSingleNode("minutos").InnerText);
                    int min = int.Parse(e.SelectSingleNode("minutos").InnerText);
                    if (min < 5)
                    {
                        newItem.BackColor = Color.Red;
                        newItem.ForeColor = Color.White;
                    }
                    else if (min < 15)
                    {
                        newItem.BackColor = Color.Yellow;
                    }
                    newItem.SubItems.Add(e.SelectSingleNode("metros").InnerText);
                    newItem.SubItems.Add(pasoparada.SelectSingleNode("ruta").InnerText);

                    lstLlegadas.Items.Add(newItem);
                }
            }

            helper.ColumnsAutoSize(lstLlegadas.Columns);

            lstLlegadas.EndUpdate();
        }

        private void menuItem1_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void menuItem2_Click(object sender, EventArgs e)
        {
            BuscarLlegadas(_linea, _ssid);
        }

        private void picAddFavorites_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("¿Añadir esta parada a tus favoritos?", "Favoritos", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
            {
                string parada = string.Format("<parada linea='{0}' ssid='{1}' />", _linea, _ssid);
                _favoritos.SelectSingleNode("//paradas").AppendChild(helper.XmlNewNodeFromSource(_favoritos,parada));
            }
        }

        private void frmProximasLlegadas_Load(object sender, EventArgs e)
        {
            this.Show();
            BuscarLlegadas(_linea, _ssid);
        }

    }
}